﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;
namespace QLVeChuyenBay
{
    public partial class frmDoanhThuThang : Form
    {
        public frmDoanhThuThang()
        {
            InitializeComponent();
        }
        DoanhThuThangBUS busThang = new DoanhThuThangBUS();
        DoanhThuThangDTO dtoThang = new DoanhThuThangDTO();
        DoanhThuNamDTO dtonam = new DoanhThuNamDTO();
        private void btnXemBaoCao_Click(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'DataSetBaoCaoDoanhThu.ViewDoanhThuThang' table. You can move, or remove it, as needed.
            this.ViewDoanhThuThangTableAdapter.Fill(this.DataSetBaoCaoDoanhThu.ViewDoanhThuThang, (cboThang.Text + txtNam.Text));
            this.reportViewerBaoCaoThang.RefreshReport();
        }

        private void frmDoanhThuThang_Load(object sender, EventArgs e)
        {
            cboThang.Text = DateTime.Now.Month.ToString();
            txtNam.Text = DateTime.Now.Year.ToString();

        }

        private void btnLapBaoCao_Click(object sender, EventArgs e)
        {
            if (cboThang.Text == "" || txtNam.Text == "")
            {
                MessageBox.Show("Phải nhập tháng và năm!", "Thông Báo");
            }
            else
            {
                DialogResult hoi = MessageBox.Show("Báo cáo chỉ lập một lần duy nhất mỗi tháng. Bạn muốn lập báo cáo cho tháng này?", "Hỏi", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
                if (hoi == DialogResult.Yes)
                {
                    dtoThang.MaDTThang = cboThang.Text + txtNam.Text;
                    dtoThang.Thang = int.Parse(cboThang.Text);

                    dtonam.MaDoanhThuNam = txtNam.Text;
                    dtonam.Nam = Convert.ToInt32(txtNam.Text);
                    dtoThang.DoanhThuNam = dtonam;
                    if (busThang.KTTrungNam(dtonam))//Mã năm đã có.
                    {

                        if (busThang.KTTrungThang(dtoThang))//Mã tháng đã được thêm trước đó.
                        {

                            MessageBox.Show("Báo cáo của tháng này đã được lập rồi! Vui lòng xem báo cáo của tháng này.", "Thông báo");

                        }
                        else //Mã tháng chưa có
                        {
                            int resThang = busThang.InsertThang(dtoThang);
                            if (resThang >= 0)//Thêm trước mã tháng,mã năm thành công
                            {
                                //Lưu chi tiết báo cáo của tháng
                                LapBaoCao();
                            }

                        }
                    }
                    else// mã năm chưa có
                    {
                        int resnam = busThang.InsertNam(dtonam);
                        if (resnam >= 0)//Thêm trước mã năm thành công
                        {

                            int resThang = busThang.InsertThang(dtoThang);
                            if (resThang >= 0)//Thêm trước mã tháng,mã năm thành công
                            {
                                //Lưu chi tiết báo cáo của tháng

                                LapBaoCao();
                            }
                            else
                                MessageBox.Show("Thêm trước mã tháng,mã năm thất bại!", "Thông báo");

                        }
                        else
                        {
                            MessageBox.Show("Thêm trước mã năm thất bại!", "Thông báo");
                        }
                    }
                }
            }
        }
        private void LapBaoCao()
        {
            List<CTDoanhThuThangDTO> dsCTDT = busThang.TinhSoVe_DoanhThu(cboThang.Text, txtNam.Text);
            CTDoanhThuThangDTO dtoCTDT = new CTDoanhThuThangDTO();
            if (dsCTDT.Count == 0)
            {
                MessageBox.Show("Không có chuyến bay nào trong tháng này!", "Thông Báo");
                int resXoa = busThang.XoaDoanhThuThangKhongBay(cboThang.Text + txtNam.Text);
                if (resXoa <0)
                {
                    MessageBox.Show("Xãy ra lỗi khi xóa tháng không có chuyến bay nào!", "Thông báo");
                }
                return;
            }
            int resCTDT = -1;
            for (int i = 0; i < dsCTDT.Count; i++)
            {
                dsCTDT[i].MaCTDoanhThu = i + dtoThang.MaDTThang;
                dtoThang.MaDTThang = cboThang.Text + txtNam.Text;
                dsCTDT[i].DoanhThuThang = dtoThang;
                resCTDT = busThang.InsertCTDoanhThu(dsCTDT[i]);

            }
            if (resCTDT >= 0)
            {
                string MaDT = cboThang.Text + txtNam.Text;
                DoanhThuThangDTO DTThang = busThang.TinhSoChuyenBay_TongDoanhThu(MaDT);
                DTThang.MaDTThang = MaDT;
                DoanhThuNamDTO dtNam = new DoanhThuNamDTO();
                dtNam.MaDoanhThuNam = txtNam.Text;
                DTThang.DoanhThuNam = dtNam;
                int ktDTThang = busThang.LuuBaoCao(DTThang);
                if (ktDTThang >= 0)
                {
                    MessageBox.Show("Lưu báo cáo thành công!", "Thông báo");
                }
                else
                    MessageBox.Show("Báo với giám đốc là không lập báo cáo được", "Lời khuyên");
            }
            else
            {
                MessageBox.Show("?????");
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cboThang_KeyPress(object sender, KeyPressEventArgs e)
        {
            cboThang.MaxLength = 2;
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtNam_KeyPress(object sender, KeyPressEventArgs e)
        {
            txtNam.MaxLength = 4;
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }
    }
    
}

